Function Reference

TCPCloseSocket

Closes a TCP socket.

TCPCloseSocket ( socket )

 

Parameters

socket The socket identifier (SocketID) as returned by a TCPListen or TCPAccept functions.

 

Return Value

Success: Returns 1.
Failure: Returns 0 and set @error according to Windows API WSAGetLastError return.

 

Remarks

None.

 

Related

TCPStartup, TCPListen, TCPAccept

 

Example


;SERVER!! Start Me First !!!!!!!!!!!!!!!
#include <GUIConstants.au3>

$g_IP = "127.0.0.1"

; Start The TCP Services
;==============================================
TCPStartUp()

; Create a Listening "SOCKET"
;==============================================
$MainSocket = TCPListen($g_IP, 65432,  100 )
If $MainSocket = -1 Then Exit
$RogueSocket = -1

; Create a GUI for chatting
;==============================================
$GOOEY = GUICreate("my server",300,200)
$edit = GUICtrlCreateEdit("",10,40,280,150,$WS_DISABLED)
$input = GUICtrlCreateInput("",10,10,200,20)
$butt = GUICtrlCreateButton("Send",210,10,80,20,$BS_DEFPUSHBUTTON)
GUISetState()

; Initialize a variable to represent a connection
;==============================================
Dim $ConnectedSocket = -1

; GUI Message Loop
;==============================================
While 1
   $msg = GUIGetMsg()

   ; GUI Closed
   ;--------------------
   If $msg = $GUI_EVENT_CLOSE Then ExitLoop

   ; User Pressed SEND
   ;--------------------
   If $msg = $butt Then
      If $ConnectedSocket > -1 Then
         $ret = TCPSend( $ConnectedSocket, GUICtrlRead($input))
         If @ERROR Or $ret < 0 Then
            ; ERROR OCCURRED, CLOSE SOCKET AND RESET ConnectedSocket to -1
            ;----------------------------------------------------------------
            TCPCloseSocket( $ConnectedSocket )
            WinSetTitle($GOOEY,"","my server - Client Disconnected")
            $ConnectedSocket = -1
         ElseIf $ret > 0 Then
            ; UPDATE EDIT CONTROL WITH DATA WE SENT
            ;----------------------------------------------------------------
            GUICtrlSetData($edit, GUICtrlRead($edit) & GUICtrlRead($input) & @CRLF )
         EndIf
      EndIf
      GUICtrlSetData($input,"")
   EndIf

   If $RogueSocket > 0 Then
      $recv = TCPRecv( $RogueSocket, 512 )
      If NOT @error Then
         TCPCloseSocket( $RogueSocket )
         $RogueSocket = -1
      EndIf
   EndIf

   ; If no connection look for one
   ;--------------------
   If $ConnectedSocket = -1 Then
      $ConnectedSocket = TCPAccept( $MainSocket)
      If $ConnectedSocket < 0 Then
         $ConnectedSocket = -1
      Else
         WinSetTitle($GOOEY,"","my server - Client Connected")
      EndIf

   ; If connected try to read some data
   ;--------------------
   Else
      ; EXECUTE AN UNCONDITIONAL ACCEPT IN CASE ANOTHER CLIENT TRIES TO CONNECT
      ;----------------------------------------------------------------
      $RogueSocket = TCPAccept( $MainSocket)
      If $RogueSocket > 0 Then
          TCPSend( $RogueSocket, "~~rejected" )
      EndIf

      $recv = TCPRecv( $ConnectedSocket, 512 )

      If $recv <> "" And $recv <> "~~bye" Then
         ; UPDATE EDIT CONTROL WITH DATA WE RECEIVED
         ;----------------------------------------------------------------
         GUICtrlSetData($edit, GUICtrlRead($edit) & ">" & $recv & @CRLF)

      ElseIf @error Or $recv = "~~bye" Then
         ; ERROR OCCURRED, CLOSE SOCKET AND RESET ConnectedSocket to -1
         ;----------------------------------------------------------------
         WinSetTitle($GOOEY,"","my server - Client Disconnected")
         TCPCloseSocket( $ConnectedSocket )
         $ConnectedSocket = -1
      EndIf
   EndIf
WEnd

GUIDelete($GOOEY)

Func OnAutoItExit()
   ;ON SCRIPT EXIT close opened sockets and shutdown TCP service
   ;----------------------------------------------------------------------
   If $ConnectedSocket > -1 Then
      TCPSend( $ConnectedSocket, "~~bye" )
      Sleep(2000)
      TCPRecv( $ConnectedSocket,  512 )
      TCPCloseSocket( $ConnectedSocket )
   EndIf
   TCPCloseSocket( $MainSocket )
   TCPShutDown()
EndFunc